{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 5.2. HLLC Riemann Solver\n",
    "\n",
    "Equation 81:\n",
    "\n",
    "$$F = \\left\\{\n",
    "\\begin{align}\n",
    "& F^L,                                                   & if\\ S_L \\geq 0 \\\\\n",
    "& F^R,                                                   & if\\ S_R \\leq 0 \\\\\n",
    "& \\frac{S_*(S_L u_L - F^L) + S_L P_{LR} D_*}{S_L - S_*}, & if\\ S_L \\leq 0\\ and\\ S_* \\geq 0 \\\\\n",
    "& \\frac{S_*(S_R u_R - F^R) + S_R P_{LR} D_*}{S_R - S_*}, & if\\ S_R \\geq 0\\ and\\ S_* \\leq 0  \n",
    "\\end{align}\n",
    "\\right.\n",
    "$$\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import enum\n",
    "class Primitive(enum.Enum):\n",
    "    rho, u, p = 0, 1, 2\n",
    "class Conservative(enum.Enum):\n",
    "    mass, momentum, energy = 0, 1, 2\n",
    "\n",
    "GAMMA = 1.4\n",
    "  \n",
    "def flux(q0, flux_type: Conservative):\n",
    "    p = (GAMMA - 1) * (q0[Conservative.energy.value] - 0.5 * q0[Conservative.momentum.value]**2 / q0[Conservative.mass.value])\n",
    "    if flux_type == Conservative.mass:\n",
    "        return q0[Conservative.momentum.value]\n",
    "    if flux_type == Conservative.momentum:\n",
    "        return (q0[Conservative.momentum.value]**2) / q0[Conservative.mass.value] + p\n",
    "    if flux_type == Conservative.energy:\n",
    "        return (q0[Conservative.momentum.value] * q0[Conservative.energy.value] + p * q0[Conservative.momentum.value]) / q0[Conservative.mass.value]\n",
    "\n",
    "def back_to_primitive(q0, primitive_type: Primitive):\n",
    "    if primitive_type == Primitive.rho:\n",
    "        return q0[Conservative.mass.value]\n",
    "    if primitive_type == Primitive.u:\n",
    "        return q0[Conservative.momentum.value] / q0[Conservative.mass.value]\n",
    "    if primitive_type == Primitive.p:\n",
    "        return (GAMMA - 1) * (q0[Conservative.energy.value] - 0.5 * q0[Conservative.momentum.value]**2 / q0[Conservative.mass.value])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from weno5_scheme import weno5_reconstruction\n",
    "from rk3 import rk3\n",
    "from IPython.display import clear_output\n",
    "\n",
    "ghost_cells_n = 3\n",
    "\n",
    "x_l, x_r, t = 0, 1, 0.2\n",
    "nx = 200\n",
    "dt = 0.0001\n",
    "dx = (x_r - x_l) / nx\n",
    "nt = int(t / dt)\n",
    "\n",
    "x = np.linspace(dx / 2 - ghost_cells_n * dx, x_r - dx / 2 + ghost_cells_n * dx, nx +2 * ghost_cells_n)\n",
    "\n",
    "# primitive states\n",
    "u = np.zeros((nt + 1, len(Primitive), nx  + 2 * ghost_cells_n))\n",
    "for i, pos in enumerate(x):\n",
    "    u[0, Primitive.rho.value, i] = 1.0 if pos < 0.5 else 0.125\n",
    "    u[0, Primitive.u.value, i] = 0.0\n",
    "    u[0, Primitive.p.value, i] = 1.0 if pos < 0.5 else 0.1\n",
    "\n",
    "rho0, u0, p0 = u[0, Primitive.rho.value], u[0, Primitive.u.value], u[0, Primitive.p.value]\n",
    "\n",
    "q = np.zeros((nt + 1, len(Primitive), nx  + 2 * ghost_cells_n))\n",
    "\n",
    "q[0, Conservative.mass.value] = rho0\n",
    "q[0, Conservative.momentum.value] = rho0 * u0\n",
    "q[0, Conservative.energy.value] = rho0 * (p0 / (rho0 * (GAMMA - 1.0)) + 0.5 * u0**2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Primitive states"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1500x400 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "states = (r\"$\\rho$\", r\"$u$\", r\"$p$\")\n",
    "plt.figure(figsize=(15, 4), dpi=100)\n",
    "for i, state in enumerate(Primitive, 1):\n",
    "    plt.subplot(1, 3, i)\n",
    "    plt.plot(x, u[0, state.value], linewidth=1)\n",
    "    plt.xlabel(\"$x$\")\n",
    "    plt.ylabel(states[i-1])\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Conservative states"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1500x400 with 3 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "states = (r\"$\\rho$\", r\"$\\rho u$\", r\"$\\rho e$\")\n",
    "plt.figure(figsize=(15, 4), dpi=100)\n",
    "for i, state in enumerate(Conservative, 1):\n",
    "    plt.subplot(1, 3, i)\n",
    "    plt.plot(x, q[0, state.value], linewidth=1)\n",
    "    plt.xlabel(\"$x$\")\n",
    "    plt.ylabel(states[i-1])\n",
    "plt.tight_layout()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [],
   "source": [
    "rhs_buffer = np.zeros((len(Conservative), nx))\n",
    "conser_values_L, conser_values_R = np.zeros(len(Conservative)), np.zeros(len(Conservative))\n",
    "f = np.zeros((len(Conservative), nx+1))\n",
    "\n",
    "# for Dirichlet boundary (for this case, symmetric boundary is possible)\n",
    "Ds = [0, 1, 0]\n",
    "def update_ghost_cells(buffer):\n",
    "    buffer[:, 0], buffer[:, 1], buffer[:, 2] = buffer[:, 5], buffer[:, 4], buffer[:, 3]\n",
    "    buffer[:, -1], buffer[:, -2], buffer[:, -3] = buffer[:, -6], buffer[:, -5], buffer[:, -4]\n",
    "\n",
    "def right_hand_side(q0):\n",
    "    \n",
    "    for i in range(nx + 1):\n",
    "        \n",
    "        for state in Conservative:\n",
    "            value = (q0[state.value, i], q0[state.value, i + 1], q0[state.value, i + 2], q0[state.value, i + 3], q0[state.value, i + 4])\n",
    "            conser_values_L[state.value] = weno5_reconstruction(value)         \n",
    "            \n",
    "            value = (q0[state.value, i+5], q0[state.value, i + 4], q0[state.value, i + 3], q0[state.value, i + 2], q0[state.value, i + 1])\n",
    "            conser_values_R[state.value] = weno5_reconstruction(value)\n",
    "        rhoL = conser_values_L[Conservative.mass.value]\n",
    "        uL = conser_values_L[Conservative.momentum.value] / rhoL\n",
    "        eL = conser_values_L[Conservative.energy.value] / rhoL\n",
    "        pL = (GAMMA - 1) * (eL * rhoL - 0.5 * rhoL * uL**2)\n",
    "        aL = np.sqrt(abs(GAMMA * pL / rhoL))\n",
    "        \n",
    "        rhoR = conser_values_R[Conservative.mass.value]\n",
    "        uR = conser_values_R[Conservative.momentum.value] / rhoR\n",
    "        eR = conser_values_R[Conservative.energy.value] / rhoR\n",
    "        pR = (GAMMA - 1) * (eR * rhoR - 0.5 * rhoR * uR**2)\n",
    "        aR = np.sqrt(abs(GAMMA * pR / rhoR))\n",
    "        \n",
    "        SL = min(uL, uR) - max(aL, aR)\n",
    "        SR = min(uL, uR) + max(aL, aR)\n",
    "        SP = (pR - pL + rhoL * uL * (SL - uL) - rhoR * uR * (SR - uR)) / (rhoL * (SL - uL) - rhoR * (SR - uR))\n",
    "        PLR = 0.5 * (pL + pR + rhoL * (SL - uL) * (SP - uL) + rhoR * (SR - uR) * (SP - uR))\n",
    "        Ds[2] = SP        \n",
    "        \n",
    "        if SL >= 0:\n",
    "            for state in Conservative:\n",
    "                f[state.value, i] = flux(conser_values_L, state)\n",
    "        elif SR <= 0:\n",
    "            for state in Conservative:\n",
    "                f[state.value, i] = flux(conser_values_R, state)\n",
    "        elif SP >= 0 and SL <= 0:\n",
    "            for state in Conservative:\n",
    "                f[state.value, i] = (SP * (SL * conser_values_L[state.value] - flux(conser_values_L, state)) + SL * PLR * Ds[state.value]) / (SL - SP)\n",
    "        elif SP <= 0 and SR >=0:\n",
    "            for state in Conservative:\n",
    "                f[state.value, i] = (SP * (SR * conser_values_R[state.value] - flux(conser_values_R, state)) + SR * PLR * Ds[state.value]) / (SR - SP)\n",
    "    for i in range(nx):\n",
    "        for state in Conservative:\n",
    "            rhs_buffer[state.value, i] = - (f[state.value, i+1] - f[state.value, i]) / dx\n",
    "\n",
    "    return rhs_buffer\n",
    "    "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 1min 20s, sys: 712 ms, total: 1min 21s\n",
      "Wall time: 1min 20s\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "\n",
    "to_update_slice = slice(ghost_cells_n, nx+ghost_cells_n)\n",
    "\n",
    "for i in range(1, nt+1):\n",
    "    \n",
    "    right_hand_side(q[i-1])\n",
    "    q[i, :, to_update_slice] = rk3(1, q[i-1, :, to_update_slice], rhs_buffer, dt, q[i, :, to_update_slice])\n",
    "    update_ghost_cells(q[i])\n",
    "\n",
    "    right_hand_side(q[i])\n",
    "    q[i, :, to_update_slice] = rk3(2, q[i-1, :, to_update_slice], rhs_buffer, dt, q[i, :, to_update_slice])\n",
    "    update_ghost_cells(q[i])\n",
    "    \n",
    "    right_hand_side(q[i])\n",
    "    q[i, :, to_update_slice] = rk3(3, q[i-1, :, to_update_slice], rhs_buffer, dt, q[i, :, to_update_slice])\n",
    "    update_ghost_cells(q[i])\n",
    "    \n",
    "    print(\"Computing: \", format(i / nt * 100, \".2f\"), \"%\")\n",
    "    clear_output(wait=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### Note that $\\rho e$ are plotted, not $e$\n",
    "\n",
    "### Pressure profile in his paper is wrong. He forgot multiplying $0.5$ for kinetic energy"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 1000x800 with 4 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(10,8), dpi=100)\n",
    "states = (r\"$\\rho$\", r\"$u$\", r\"$\\rho e$\", r\"$p$\")\n",
    "profiles = (back_to_primitive(q[-1], Primitive.rho), back_to_primitive(q[-1], Primitive.u), q[-1, Conservative.energy.value], back_to_primitive(q[-1], Primitive.p))\n",
    "for i, (state, profile) in enumerate(zip(states, profiles)):\n",
    "    plt.subplot(2, 2, i+1)\n",
    "    plt.plot(x, profile, linewidth=1)\n",
    "    plt.xlabel(\"$x$\")\n",
    "    plt.ylabel(state)\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "gpytorch",
   "language": "python",
   "name": "gpytorch"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
